From 8594809ef2ad16c7086a949fae1f84e313c8facd Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 26 Jan 2010 15:53:01 +0000 Subject: [PATCH] x86: Directly clear all pending EOIs once MSI info changed As to unmaskable MSI, its deferred EOI policy only targets for avoiding IRQ storm. It should be safe to clear pending EOIs in advance when guest irq migration occurs, because next interrupt's EOI write is still deferred, and also can avoid storm. Signed-off-by: Xiantao Zhang --- xen/drivers/passthrough/io.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c index 87e5a98ddc..627b964b23 100644 --- a/xen/drivers/passthrough/io.c +++ b/xen/drivers/passthrough/io.c @@ -197,6 +197,8 @@ int pt_irq_create_bind_vtd( /* if pirq is already mapped as vmsi, update the guest data/addr */ if ( hvm_irq_dpci->mirq[pirq].gmsi.gvec != pt_irq_bind->u.msi.gvec || hvm_irq_dpci->mirq[pirq].gmsi.gflags != pt_irq_bind->u.msi.gflags) { + /* Directly clear pending EOIs before enabling new MSI info. */ + pirq_guest_eoi(d, pirq); hvm_irq_dpci->mirq[pirq].gmsi.gvec = pt_irq_bind->u.msi.gvec; hvm_irq_dpci->mirq[pirq].gmsi.gflags = pt_irq_bind->u.msi.gflags; -- 2.30.2